1. 题目描述(中等难度)
[warning] 71. 简化路径
2. 解法一: 栈
解题思路
分割字符串之后根据每种情况进行判定,.和``就不用管,直接跳过,..就代表着返回上一级,即弹出队尾元素(要注意判空) 其他情况直接压入队列就行。
也可以用一个数组来维护。
class Solution {
public String simplifyPath(String path) {
String[] pathStr = path.split("/");
Deque<String> deque = new ArrayDeque<>();
for(String s: pathStr){
if(s.equals("") || s.equals(".")){
continue;
}
else if(s.equals("..")){
if(!deque.isEmpty()){
deque.pollLast();
}
}
else{
deque.offerLast(s);
}
}
StringBuilder sb = new StringBuilder();
for(String ans : deque){
sb.append("/");
sb.append(ans);
}
if(sb.toString().equals("")){
return "/";
}
return sb.toString();
}
}